package com.kunkun.ui;

import com.kunkun.bean.user;

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;

// 自定义登录界面
public class Loginui extends JFrame{
    private JTextField loginNameField;//用户名输入框
    private JPasswordField passwordField;//密码输入框
    private JButton loginButton;//登录按钮
    private JButton registerButton;//注册按钮
    //定义一个静态的集合，存储全部的用户信息
    private static ArrayList<user> users = new ArrayList<>();
    //初始化几个测试的用户对象信息
    static {
        users.add(new user("孙建琨", "123456", "小珠猪"));
//        users.add(new user("admin", "123456", "管理员"));
//        users.add(new user("xuanxuan", "123456", "普通用户"));
    }

    public Loginui(){
        super("登录页面");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 400);
        this.setLocationRelativeTo(null);

        createAndShowGUI();
    }
    private void createAndShowGUI() {
        // 创建主窗口

        // 创建面板
        JPanel panel = new JPanel();
        panel.setLayout(null);
        panel.setBackground(new Color(240, 240, 240));

        // 设置字体和颜色
        Font customFont = new Font("楷体", Font.BOLD, 18);
        Color primaryColor = new Color(66, 135, 245);
        Color secondaryColor = new Color(204, 204, 204); // 更浅的颜色用于注册按钮

        // 标题
        JLabel titleLabel = new JLabel("人事管理系统");
        titleLabel.setBounds(50, 30, 300, 30);
        titleLabel.setFont(new Font("楷体", Font.BOLD, 24));
        titleLabel.setHorizontalAlignment(SwingConstants.CENTER);
        panel.add(titleLabel);


        // 用户名标签
        JLabel usernameLabel = new JLabel("用户名：");
        usernameLabel.setBounds(50, 100, 150, 30);
        usernameLabel.setFont(customFont);
        panel.add(usernameLabel);

        // 用户名输入框
        loginNameField = new JTextField();
        loginNameField.setBounds(160, 100, 190, 30);
        loginNameField.setFont(customFont);
        panel.add(loginNameField);

        // 密码标签
        JLabel passwordLabel = new JLabel("密   码：");
        passwordLabel.setBounds(50, 150, 150, 30);
        passwordLabel.setFont(customFont);
        panel.add(passwordLabel);

        // 密码输入框
        passwordField = new JPasswordField();
        passwordField.setBounds(160, 150, 190, 30);
        passwordField.setFont(customFont);
        // 设置掩码字符为星号，确保在所有字体下都能正确显示
        passwordField.setEchoChar('*');
        panel.add(passwordField);


        // 登录按钮
        loginButton = new JButton("登   录");
        loginButton.setBounds(50, 200, 150, 30);
        loginButton.setFont(customFont);
        loginButton.setBackground(primaryColor);
        loginButton.setForeground(Color.WHITE);
        panel.add(loginButton);
        loginButton.addActionListener(e->{
            //可能是登录按钮，也可能是注册按钮
            if (e.getSource() == loginButton) {
                login();
            }
        });
//        loginButton.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                // 处理按钮点击事件
//                if (e.getSource() == loginButton) {
//                    login();
//                }
//            }
//        });
        //如果 Loginui 类实现了 ActionListener 接口，那么 this 就可以作为参数传递给 addActionListener 方法。

        // 注册按钮
        registerButton = new JButton("注   册");
        registerButton.setBounds(200, 200, 150, 30);
        registerButton.setFont(customFont);
        registerButton.setBackground(secondaryColor);
        registerButton.setForeground(Color.BLACK);
        panel.add(registerButton);
        registerButton.addActionListener(e->{
            System.out.println("注册功能还未完善");
        });

        // 添加面板到窗口
        this.add(panel);
        this.setVisible(true);
    }

    private void login() {
        //获取用户输入的用户名和密码
        String loginname = loginNameField.getText();
        String password = new String(passwordField.getPassword());
        //根据登录名称去查询用户对象返回
        user user = findUserByLoginName(loginname);
        if (user != null && user.getPassword().equals(password)) {
            //登录成功
            JOptionPane.showMessageDialog(this, "登录成功！");
            //跳转到员工管理页面
            new EmployeeManager(user.getUsername());
            this.dispose();
        } else {
            //登录失败
            JOptionPane.showMessageDialog(this, "登录失败，请检查用户名和密码！");
        }

    }
    //根据登录名称去查询用户对象返回，使用for循环遍历
    private user findUserByLoginName(String LoginName) {
        for (user user : users) {
            if (user.getLoginname().equals(LoginName)) {
                return user;
            }
        }
        return null;
    }

}
